Skip to content

fix: only delete logs from rolled-back blocks, not entire tag (A-686)#21687

Merged
spalladino merged 2 commits intomerge-train/spartanfrom
phil/a-686-deletelogs-deletes-all-logs-for-a-tag-not-just-rolled-back
Mar 18, 2026
Merged

fix: only delete logs from rolled-back blocks, not entire tag (A-686)#21687
spalladino merged 2 commits intomerge-train/spartanfrom
phil/a-686-deletelogs-deletes-all-logs-for-a-tag-not-just-rolled-back

Conversation

@PhilWindle
Copy link
Collaborator

During reorg, deleteLogs was deleting the entire log entry for a tag instead of only removing logs from the rolled-back blocks. This caused logs from earlier blocks to be lost.

Fixes https://linear.app/aztec-labs/issue/A-686

@PhilWindle PhilWindle closed this Mar 17, 2026
@PhilWindle PhilWindle reopened this Mar 17, 2026
Copy link
Contributor

@nventuro nventuro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fix looks correct. I'd add two tests where we have two txs in different blocks emit logs with the same tag, reorg the second block and check that the node query fns still return the first (un-reorged) log.

@spalladino spalladino added the claudebox Owned by claudebox. it can push to this PR. label Mar 17, 2026
@spalladino spalladino marked this pull request as ready for review March 17, 2026 21:19
@AztecProtocol AztecProtocol deleted a comment from AztecBot Mar 17, 2026
@spalladino spalladino enabled auto-merge (squash) March 17, 2026 21:27
const firstBlockToDelete = Math.min(...blockNumbers);

// Collect all unique private tags across all blocks being deleted
const allPrivateTags = new Set(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd probably extract blocks.map(block => this.#privateLogKeysByBlock.getAsync(block.number)) into a temporary

@spalladino spalladino merged commit 946ddb1 into merge-train/spartan Mar 18, 2026
16 checks passed
@spalladino spalladino deleted the phil/a-686-deletelogs-deletes-all-logs-for-a-tag-not-just-rolled-back branch March 18, 2026 02:06
@AztecBot
Copy link
Collaborator

❌ Failed to cherry-pick to v4 due to conflicts. (🤖) View backport run.

AztecBot pushed a commit that referenced this pull request Mar 18, 2026
ludamad added a commit that referenced this pull request Mar 18, 2026
…entire tag (A-686) (#21713)

## Summary
Backport of #21687
to v4.

During reorg, `deleteLogs` was deleting the entire log entry for a tag
instead of only removing logs from the rolled-back blocks. This caused
logs from earlier blocks to be lost.

## Cherry-pick conflicts
The automatic cherry-pick failed due to API differences between `next`
and `v4`:
- `next` uses `store.addProposedBlock(block)` (singular) — v4 uses
`store.addProposedBlocks([block])` (plural, takes array)
- `next` uses a helper `addProposedBlocks(store, ...)` — adapted to call
`store.addProposedBlocks(...)` directly in v4

## Commit structure
1. **Cherry-pick with conflicts** — raw cherry-pick preserving conflict
markers
2. **Conflict resolution** — adapted `addProposedBlock` →
`addProposedBlocks` API calls

Fixes https://linear.app/aztec-labs/issue/A-686

ClaudeBox log: https://claudebox.work/s/1f9640fef77e1838?run=2
github-merge-queue bot pushed a commit that referenced this pull request Mar 18, 2026
BEGIN_COMMIT_OVERRIDE
fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation
(#21605)
chore: fixing M3 devcontainer builds (#21611)
fix: clamp finalized block to oldest available in world-state (#21643)
chore: fix proving logs script (#21335)
fix: (A-649) tx collector bench test (#21619)
fix(validator): process block proposals from own validator keys in HA
setups (#21603)
fix: add bounds when allocating arrays in deserialization (#21622)
fix: skip handleChainFinalized when block is behind oldest available
(#21656)
chore: demote finalized block skip log to trace (#21661)
fix: skip -march auto-detection for cross-compilation presets (#21356)
chore: revert "add bounds when allocating arrays in deserialization"
(#21622) (#21666)
fix: capture txs not available error reason in proposal handler (#21670)
fix: estimate gas in bot and make BatchCall.simulate() return
SimulationResult (#21676)
fix: prevent HA peer proposals from blocking equivocation in duplicate
proposal test (#21673)
fix(p2p): penalize peers for errors during response reading (#21680)
feat(sequencer): add build-ahead config and metrics (#20779)
chore: fixing build on mac (#21685)
fix: HA deadlock for last block edge case (#21690)
fix: process all contract classes in storeBroadcastedIndividualFunctions
(A-683) (#21686)
chore: add slack success post on nightly scenario (#21701)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix: only delete logs from rolled-back blocks, not entire tag (A-686)
(#21687)
chore(p2p): lower attestation pool per-slot caps to 2 (#21709)
chore(p2p): remove unused method (#21678)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(test): workaround slow mock creation (#21708)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
fix: batch checkpoint unwinding in handleEpochPrune (A-690) (#21668)
fix(sequencer): add missing opts arg to checkpoint_builder tests
(#21733)
fix: race condition in fast tx collection (#21496)
fix: increase default postgres disk size from 1Gi to 10Gi (#21741)
fix: update batch_tx_requester tests to use RequestTracker (#21734)
chore: replace dead BOOTSTRAP_TO env var with bootstrap.sh build arg
(#21744)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
fix: deflake attempt for l1_tx_utils (#21743)
fix(test): fix flaky keystore reload test (#21749)
fix(test): fix flaky duplicate_attestation_slash test (#21753)
feat(pipeline): introduce pipeline views for building (#21026)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-to-v4 claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants